#pragma once

#include <GL/glew.h>
#include <glm/glm.hpp>
#include <glm/gtx/transform.hpp>
#include <glm/gtc/type_ptr.hpp>
#include "slInput.hh"

class slCamera
{
public:
	slCamera();
	slCamera(glm::vec3 position, glm::vec3 target, glm::vec3 verticalAxe);
	~slCamera();
	void orientate(int xRel, int yRel);
	void move(slInput &input);
	void lookAt();
	glm::vec3 getPosition() const;
	glm::vec3 getTarget() const;
	glm::vec3 getOrientation() const;

private:
	float _phi;
	float _theta;
	glm::vec3 _orientation;
	glm::vec3 _verticalAxe;
	glm::vec3 _lateralMovement;
	glm::vec3 _position;
	glm::vec3 _target;
};